package com.example.mybatisplus.web.controller;

import com.example.mybatisplus.mapper.AdminMapper;
import com.example.mybatisplus.model.domain.Student;
//import org.omg.CORBA.PUBLIC_MEMBER;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.example.mybatisplus.common.JsonResponse;
import com.example.mybatisplus.service.AdminService;
import com.example.mybatisplus.model.domain.Admin;

import java.util.HashMap;
import java.util.Map;

@Controller
@RestController
@RequestMapping("/api/admin")
public class AdminController {

    @Autowired
    private AdminMapper adminMapper;

    @Autowired
    private AdminService adminService;

    @RequestMapping("xx")
    @ResponseBody// 表示这个方法不再返回页面，而是返回数据
    public Admin hh() {
        // 写一个根据id 查询用户
        Admin admin = adminService.getByIdMy(88);
        return admin;
    }

    // 发请求的同时要发参数
    // 3 种
    // 1 get典型传参  前端怎么传，后端怎么接
    // http://127.0.0.1:8080/api/admin/getById?id=8
    // 这种方式只适合前端传固定参过来，比较简朴 getById

    // 2 get典型传参 用对象接  要求对象的属性名和前端传的键名一致
    // 假如没有这样一个对象可以接收呢

    // 3 post 请求传参： 前端post请求发送的是json数据
    // 后端必须用对象去接，要求是对象的属性名必须为json的键名，然后再在参数前加注解
    // 这个注解的作业是将json转为对象

    @GetMapping("getById")
    @ResponseBody
    public Admin qq(Long id) {
        return adminMapper.selectById(id);
    }


    @GetMapping("getById1")
    @ResponseBody
    public Admin qq1(Admin admin) {
        return adminMapper.selectById(admin.getId());
    }

    // 统一返回：必须返回统一的json数据{x;y,a:b}

    @GetMapping("getByIdCount")
    @ResponseBody
    public JsonResponse qq2(Admin admin) {
        Admin admin1 = adminMapper.selectById(20);
        return JsonResponse.success(admin1);
    }

    @GetMapping("login")
    @ResponseBody
    public JsonResponse login(Admin admin){
        // login 有值表示数据库有这个人 没值表示没这个人
        Admin login = adminService.login(admin);
        return JsonResponse.success(login);
    }

    // restful风格： 4种情况 增删改查  登录的本质其实是查询 可以理解  注册就是插入
    // 针对每个目的都有一种请求与之对应
    // 查询 get
    // 删除 delete

}
